package com.youlu.campus.web.community.controller;

import com.youlu.campus.entity.ActivityOrganizerInfo;
import com.youlu.campus.entity.VO.req.ActivityOrganizerQueryVO;
import com.youlu.campus.service.organizer.ActivityOrganizerInfoService;
import com.youlu.campus.web.common.base.RequestContext;
import com.yuelin.infrastructure.quantum.common.QResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 活动组织者信息控制器
 * 处理活动组织者相关的CRUD操作及查询请求
 *
 * @author: YangJ
 */
@Slf4j
@RestController
public class ActivityOrganizerInfoController {
    @Autowired
    private ActivityOrganizerInfoService activityOrganizerInfoService;

    /**
     * 获取活动组织者列表
     * @param req 活动组织者查询条件
     * @return 活动组织者列表
     */
    @PostMapping("/mini-app/activity/organizer/list")
    public QResult list(@RequestBody ActivityOrganizerQueryVO req) {
        req.setBizFrom("h5-api");
        return QResult.success(activityOrganizerInfoService.list(req));
    }

    /**
     * 创建活动组织者信息
     * @param req 活动组织者信息
     * @return 创建结果
     */
    @PostMapping("/mini-app/activity/organizer/create")
    public QResult create(@RequestBody ActivityOrganizerInfo req) {
        req.setOwnerUserId(RequestContext.getUserId());
        return QResult.success(activityOrganizerInfoService.create(req));
    }

    /**
     * 更新活动组织者信息
     * @param req 待更新的活动组织者信息
     * @return 更新结果
     */
    @PostMapping("/mini-app/activity/organizer/update")
    public QResult update(@RequestBody ActivityOrganizerInfo req) {
        req.setOwnerUserId(RequestContext.getUserId());
        req.setStatus(0);
        return QResult.success(activityOrganizerInfoService.update(req));
    }

    /**
     * 根据ID查询活动组织者信息
     * @param id 活动组织者ID
     * @return 活动组织者详情
     */
    @GetMapping("/mini-app/activity/organizer/find-one")
    public QResult findOne(@RequestParam("id") String id) {
        return QResult.success(activityOrganizerInfoService.findOne(id));
    }

    /**
     * 根据用户ID查询活动组织者信息
     * @param activityId 活动ID
     * @return 活动组织者信息
     */
    @GetMapping("/mini-app/activity/organizer/find-by-user")
    public QResult findByUserId(@RequestParam("activityId") String activityId) {
        return QResult.success(activityOrganizerInfoService.find(activityId, RequestContext.getUserId()));
    }

    /**
     * 获取活动组织者基本信息
     * @param activityId 活动ID
     * @return 活动组织者基本信息
     */
    @GetMapping("/mini-app/activity/organizer/base-info")
    public QResult getBaseInfo(@RequestParam("activityId") String activityId) {
        return QResult.success(activityOrganizerInfoService.getBaseInfo(activityId, RequestContext.getCurUser()));
    }

}